﻿//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
#include "common.h"

short sex = 1;  // 全局变量 // 注意：全局变量可以在多个文件中引用
                  // 记录性别：1 表示男，0 表示女

void study02()  // 主函数接口
{  // 注意：全局变量可以在多个文件中引用
   // 输出一个 char 类型变量所占用的内存空间（字节）
   printf("%zu\n", sizeof(char));  // char // 输出一个 char 变量占用的内存空间（字节） --> 1
   printf("%zu\n", sizeof(short));  // short --> 2
   printf("%zu\n", sizeof(int)); // int   // %d 输出整数并与格式匹配 --> 4
   printf("%zu\n", sizeof(long));  // long --> 4
                                    // C语言标准中 long 的字节数 >= int 的字节数
   printf("%zu\n", sizeof(long long));  // long long --> 8
   printf("%zu\n", sizeof(float));  // 单精度浮点数 --> 4
   printf("%zu\n", sizeof(double));   // 双精度浮点数 --> 8
                                      // 输出不同类型变量所占用的内存空间大小
   int age = 26; // 表示内存中 4 字节，int 类型占用 age 变量的值为 26
   float high = 177.8; // 这样写会丢失小数部分，因为 long 类型是整数类型
   long salary = 10000; // 这样写会丢失小数部分，因为 long 类型是整数类型
   short sex = 0;  // 覆盖前面的全局变量 sex 的值，从 1 改为 0，输出变量 sex 的值 --> sex=0 覆盖全局变量
                   // 输出语句

   // 输出变量 sex 的值
   printf("sex=%d\n", sex);  // --> sex=0 输出变量 sex 的值 // 注意 printf 只是直接输出变量的值，并不是输出变量的地址

   // 输入输出
   int num1 = 50;  // 初始化
   int num2 = 100;

   // 示例：使用 scanf 函数读取输入
   // scanf("%d %d", &num1, &num2); // & 取地址 // 注意：如果只是用到了 scanf 函数，那么需要在文件开头添加 #define _CRT_SECURE_NO_WARNINGS ，否则会报错
   //scanf_s("%d %d", &num1, &num2);  // 正确
   // scanf_s 是 Visual Studio 提供的安全函数，只有在 Visual Studio 中编译才能识别，并且只在 Visual Studio 中编译正确C语言的标准函数
   // 使用 scanf_s 函数

   // 计算数值
   int sum = num1 + num2;

   // 输出数值
   printf("num1=%d\n", num1); // 输出变量 num1 的值
   printf("num2=%d\n", num2); // 输出变量 num2 的值
   printf("num1 + num2 = %d\n", sum);

   {
       int a = 555;
       printf("a=%d\n", a); // 输出变量 a 的值 // 注意 printf 只是直接输出变量的值，并不是输出变量的地址
   }

   //printf("a = %d\n", a); // error: 变量 a 未定义，因为它在局部作用域中定义，只能在局部作用域中使用

   // 调用 study03 中的 start 和 var 函数
   // start(); var();

   // 输出外部变量
   extern int len_c3; // 声明一个外部 int 变量在 main 函数接口外
   printf("len_c3 的值是：%d\n", len_c3); // 输出变量 len_c3 的值
   // return 0;
}

// 全局变量 // 声明外部变量
// 输出外部变量的值
// 在 Visual Studio 的安装路径下找到一个 newc++file.cpp 文件：
// 在 Visual Studio 中编写 .c 或 .cpp 文件时，会自动识别 newc++file.cpp 文件，然后复制其中的内容
// 示例：scanf 和 printf 函数的格式、地址说明等，参见学习笔记文件
